/*This file contains the Syscall names, so we don't have to retype them all of the time*/

#ifndef THEATERNAMES_H
#define THEATERNAMES_H
#include "copyright.h"
#include "syscall.h"

#define NUM_ROWS	5
#define ROW_SIZE	5
#define MAX_TC	3
#define MAX_CC	3
#define MAX_TT	3
#define	MAX_GROUPS	10

/* Global Variables */

const char* numGroupsName = "NumGroups";
const int numGroupsNameLength = 8;
const char* numCustomersName = "NumCust"; /*counter to number the customers*/
const int numCustomersNameLength = 7;

/* Customer Data "Structure"*/

const char* customerNumberName = "CustNumber"; /*[MAX_GROUPS*3]*/
const int customerNumberNameLength = 10;
const char* customerGroupNumberName = "CustGrNum"; /*[MAX_GROUPS*3]*/
const int customerGroupNumberNameLength = 9;
const char* customerWantsPopcornName = "CustWPopc"; /*[MAX_GROUPS*3]*/
const int customerWantsPopcornNameLength = 9;
const char* customerWantsSodaName = "CustWSoda"; /*[MAX_GROUPS*3]*/
const int customerWantsSodaNameLength = 9;
const char* customerNeedsBathroomName = "CustNBathr"; /*[MAX_GROUPS*3]*/
const int customerNeedsBathroomNameLength = 10;
const char* customerIsHeadCustomerName = "CustIsHC"; /*[MAX_GROUPS*3]*/
const int customerIsHeadCustomerNameLength = 8;
const char* customerSeatNumberName = "CSeatNum"; /*[MAX_GROUPS*3]*/
const int customerSeatNumberNameLength = 8;
const char* customerHasPopcornName = "CustHPopc"; /*[MAX_GROUPS*3]*/
const int customerHasPopcornNameLength = 9;
const char* customerHasSodaName = "CustHSoda"; /*[MAX_GROUPS*3]*/
const int customerHasSodaNameLength = 9;
	
/*Head Customer Information*/
const char* groupSizeName = "GroupSize"; /*[MAX_GROUPS]*/
const int groupSizeNameLength = 9;
const char* groupPopcornSizeName = "GrPopcSize";/*[MAX_GROUPS]*/
const int groupPopcornSizeNameLength = 10;
const char* groupSodaSizeName = "GrSodaSize"; /*[MAX_GROUPS]*/
const int groupSodaSizeNameLength = 10;
const char* groupBathroomSizeName = "GrBathSize"; /*[MAX_GROUPS]*/
const int groupBathroomSizeNameLength = 10;
const char* groupMoneyName = "GroupMoney"; /*[MAX_GROUPS]*/
const int groupMoneyNameLength = 10;
const char* groupTicketsName = "GroupTicks"; /*[MAX_GROUPS]*/
const int groupTicketsNameLength = 10;
const char* headCustomerNumberName = "HCNum"; /*[MAX_GROUPS] the head customers customer number*/
const int headCustomerNumberNameLength = 5;
const char* customerStateName = "CustState"; /*[MAX_GROUPS]*/
const int customerStateNameLength = 9;
const char* customerStateLockName = "CStateLock"; /*[MAX_GROUPS]*/
const int customerStateLockNameLength = 10;

/*HeadCustomer - Regular Customer const interaction*/

const char* headCustomerLockName[MAX_GROUPS*4] = {"HCustLck00", "HCustLck01", "HCustLck02", "HCustLck03", "HCustLck04", "HCustLck05", "HCustLck06", "HCustLck07", "HCustLck08", "HCustLck09", "HCustLck10", "HCustLck11", "HCustLck12", "HCustLck13", "HCustLck14", "HCustLck15", "HCustLck16", "HCustLck17", "HCustLck18", "HCustLck19", "HCustLck20", "HCustLck21", "HCustLck22", "HCustLck23", "HCustLck24", "HCustLck25", "HCustLck26", "HCustLck27", "HCustLck28", "HCustLck29", "HCustLck30", "HCustLck31", "HCustLck32", "HCustLck33", "HCustLck34", "HCustLck35", "HCustLck36", "HCustLck37", "HCustLck38", "HCustLck39"};
const int headCustomerLockNameLength[MAX_GROUPS*4] = {10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10};
const char* headCustomerConditionVariableName[MAX_GROUPS*4] = {"HCustCV00", "HCustCV01", "HCustCV02", "HCustCV03", "HCustCV04", "HCustCV05", "HCustCV06", "HCustCV07", "HCustCV08", "HCustCV09", "HCustCV10", "HCustCV11", "HCustCV12", "HCustCV13", "HCustCV14", "HCustCV15", "HCustCV16", "HCustCV17", "HCustCV18", "HCustCV19", "HCustCV20", "HCustCV21", "HCustCV22", "HCustCV23", "HCustCV24", "HCustCV25", "HCustCV26", "HCustCV27", "HCustCV28", "HCustCV29", "HCustCV30", "HCustCV31", "HCustCV32", "HCustCV33", "HCustCV34", "HCustCV35", "HCustCV36", "HCustCV37", "HCustCV38", "HCustCV39"};
const int headCustomerConditionVariableNameLength[MAX_GROUPS*4] = {9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9};
const char* regularCustomerConditionVariableName[MAX_GROUPS*4] = {"RCustCV00", "RCustCV01", "RCustCV02", "RCustCV03", "RCustCV04", "RCustCV05", "RCustCV06", "RCustCV07", "RCustCV08", "RCustCV09", "RCustCV10", "RCustCV11", "RCustCV12", "RCustCV13", "RCustCV14", "RCustCV15", "RCustCV16", "RCustCV17", "RCustCV18", "RCustCV19", "RCustCV20", "RCustCV21", "RCustCV22", "RCustCV23", "RCustCV24", "RCustCV25", "RCustCV26", "RCustCV27", "RCustCV28", "RCustCV29", "RCustCV30", "RCustCV31", "RCustCV32", "RCustCV33", "RCustCV34", "RCustCV35", "RCustCV36", "RCustCV37", "RCustCV38", "RCustCV39"};
const int regularCustomerConditionVariableNameLength[MAX_GROUPS*4] = {9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9};
	
/* Customer Finding Ticket Line */
const char* ticketClerkLineLockName = "TCLineLck"; /* Lock for choosing a line */
const int ticketClerkLineLockNameLength = 9;
const char* ticketClerkLineConditionVariableName[MAX_TC] = {"TCLineCV0", "TCLineCV1", "TCLineCV2"};
const int ticketClerkLineConditionVariableNameLength[MAX_TC] = {9,9,9};
const char* ticketClerkLineCountName = "TCLineCt"; /*[MAX_TC]*/
const int ticketClerkLineCountNameLength = 8;
const char* ticketClerkStateName = "TCState"; /*[MAX_TC] 0 = NOT_BUSY, 1 = BUSY, 2 = ON_BREAK, -1 = NOT_AVAILABLE */
const int ticketClerkStateNameLength = 7;

/* Customer - TicketClerk const interaction */

const char* ticketClerkLockName[MAX_TC] = {"TCLock0", "TCLock1", "TCLock2"};
const int ticketClerkLockNameLength[MAX_TC] = {7,7,7};
const char* ticketClerkConditionVariableName[MAX_TC] = {"TCCV0", "TCCV1", "TCCV2"};
const int ticketClerkConditionVariableNameLength[MAX_TC] = {5,5,5};
const char* ticketClerkRegisterName = "TCRegister";
const int ticketClerkRegisterNameLength = 10;
const char* ticketClerkNumToSellName = "TCNumSell";
const int ticketClerkNumToSellNameLength = 9;

/* Customer Finding Concession Line */

const char* concessionClerkLineLockName = "CClerkLineLock";
const int concessionClerkLineLockNameLength = 14;
const char* concessionClerkLineConditionVariableName[MAX_CC] = {"CClerkCV0", "CClerkCV1", "CClerkCV2"};
const int concessionClerkLineConditionVariableNameLength[MAX_CC] = {9, 9, 9};
const char* concessionClerkLineCountName = "CClerkLine";
const int concessionClerkLineCountNameLength = 10;
const char* concessionClerkStateName = "CClerkSt";
const int concessionClerkStateNameLength = 8;


/* Customer - ConcessionClerk const interaction */

const char* concessionClerkLockName[MAX_CC] = {"CClerkLck0", "CClerkLck1", "CClerkLck2"};
const int concessionClerkLockNameLength[MAX_CC] = {10, 10, 10};
const char* concessionClerkConditionVariableName[MAX_CC] = {"CCCV0", "CCCV1", "CCCV2"};
const int concessionClerkConditionVariableNameLength[MAX_CC] = {5,5,5};
const char* concessionClerkRegisterName = "CCRegister";
const int concessionClerkRegisterNameLength = 10;
const char* concessionClerkPopcornToSellName = "CCPopcSell";
const int concessionClerkPopcornToSellNameLength = 10;
const char* concessionClerkSodaToSellName = "CCSodaSell";
const int concessionClerkSodaToSellNameLength = 10;

/*Customer Finding TicketTaker Line*/
const char* ticketTakerLineLockName = "TTLineLock";
const int ticketTakerLineLockNameLength = 10;
const char* ticketTakerLineConditionVariableName[MAX_TT] = {"TTLineCV0", "TTLineCV1", "TTLineCV2"};
const int ticketTakerLineConditionVariableNameLength[MAX_TT] = {9,9,9};
const char* ticketTakerLineCountName = "TTLineCt";
const int ticketTakerLineCountNameLength = 8;
const char* ticketTakerStateName = "TTState"; /* 0 = NOT_BUSY, 1 = BUSY, 2 = ON_BREAK, -1 = NOT_AVAILABLE */
const int ticketTakerStateNameLength = 7;

/*Customer - TicketTaker const interaction*/

const char* ticketTakerLockName[MAX_TT] = {"TTLock0", "TTLock1", "TTLock2"};
const int ticketTakerLockNameLength[MAX_TT] = {7,7,7};
const char* ticketTakerConditionVariableName[MAX_TT] = {"TTCV0", "TTCV1", "TTCV2"};
const int ticketTakerConditionVariableNameLength[MAX_TT] = {5,5,5};
const char* ticketTakerCounterName = "TTCounter";
const int ticketTakerCounterNameLength = 9;
const char* numberAdmittedName = "NumAdmit";
const int numberAdmittedNameLength = 8;

/* Lobby variables */
const char* lobbyConditionVariableName = "LobbyCV";
const int lobbyConditionVariableNameLength = 7;

/* Total register values */
const char* ticketMoneyName = "TickMoney";
const int ticketMoneyNameLength = 9;
const char* concessionMoneyName = "ConMoney";
const int concessionMoneyNameLength = 8;

/* Customer Finding Seat const interaction*/

const char* roomName[NUM_ROWS] = {"Row0", "Row1", "Row2", "Row3", "Row4"};
const int roomNameLength[NUM_ROWS] = {4,4,4,4,4};
const char* seatsFilledName = "SeatsFilled";
const int seatsFilledNameLength = 11;
const char* movieRoomLockName = "MovieRmLock";
const int movieRoomLockNameLength = 11;
const char* movieRoomConditionVariableName = "MovieRoomCV";
const int movieRoomConditionVariableNameLength = 11;

/* Technician - Customer const interaction */
const char* movieDataLockName = "MovieDatLk";
const int movieDataLockNameLength = 10;
const char* technicianDataConditionVariableName = "TechDataCV";
const int technicianDataConditionVariableNameLength = 10;

/* Manager - Technician const interaction */

const char* movieStartTimeName = "MovieStart";
const int movieStartTimeNameLength = 10;
const char* movieEndedName = "MovieEnded";
const int movieEndedNameLength = 10;
const char* movieLengthName = "MovieLen";
const int movieLengthNameLength = 8;

/* Manager - End Simulation Information */

const char* custCounterName = "CustCountr";
const int custCounterNameLength = 10;
const char* counterLockName = "CounterLk";
const int counterLockNameLength = 9;

/* Manager - Ticket Clerk break scenario */

const char* ticketClerkBreakLockName[MAX_TC] = {"TCBreakLk0", "TCBreakLk1", "TCBreakLk2"};
const int ticketClerkBreakLockNameLength[MAX_TC] = {10,10,10};
const char* ticketClerkBreakConditionVariableName[MAX_TC] = {"TCBreakCV0", "TCBreakCV1", "TCBreakCV2"};
const int ticketClerkBreakConditionVariableNameLength[MAX_TC] = {10,10,10};
const char* ticketClerkBreakName = "TCBreak";
const int ticketClerkBreakNameLength = 7;

/* Manager - Concession Clerk break scenario */

const char* concessionClerkBreakLockName[MAX_CC] = {"CCBreakLk0", "CCBreakLk1", "CCBreakLk2"};
const int concessionClerkBreakLockNameLength[MAX_CC] = {10,10,10};
const char* concessionClerkBreakConditionVariableName[MAX_CC] = {"CCBreakCV0", "CCBreakCV1", "CCBreakCV2"};
const int concessionClerkBreakConditionVariableNameLength[MAX_CC] = {10,10,10};
const char* concessionClerkBreakName = "CCBreak";
const int concessionClerkBreakNameLength = 7;

/* Manager - Ticket Taker break scenario */

const char* ticketTakerBreakLockName[MAX_TT] = {"TTBreakLk0", "TTBreakLk1", "TTBreakLk2"};
const int ticketTakerBreakLockNameLength[MAX_TT] = {10,10,10};
const char* ticketTakerBreakConditionVariableName[MAX_TT] = {"TTBreakCV0", "TTBreakCV1", "TTBreakCV2"};
const int ticketTakerBreakConditionVariableNameLength[MAX_TT] = {10,10,10};
const char* ticketTakerBreakName = "TTBreak";
const int ticketTakerBreakNameLength = 7;

/*Bathroom Variables*/

const char* bathroomLockName[MAX_GROUPS*4] = {"BRLock00", "BRLock01", "BRLock02", "BRLock03", "BRLock04", "BRLock05", "BRLock06", "BRLock07", "BRLock08", "BRLock09", "BRLock10", "BRLock11", "BRLock12", "BRLock13", "BRLock14", "BRLock15", "BRLock16", "BRLock17", "BRLock18", "BRLock19", "BRLock20", "BRLock21", "BRLock22", "BRLock23", "BRLock24", "BRLock25", "BRLock26", "BRLock27", "BRLock28", "BRLock29", "BRLock30", "BRLock31", "BRLock32", "BRLock33", "BRLock34", "BRLock35", "BRLock36", "BRLock37", "BRLock38", "BRLock39"};
const int bathroomLockNameLength[MAX_GROUPS*4] = {8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8};
const char* bathroomLobbyConditionVariableName[MAX_GROUPS*4] = {"BRCV00", "BRCV01", "BRCV02", "BRCV03", "BRCV04", "BRCV05", "BRCV06", "BRCV07", "BRCV08", "BRCV09", "BRCV10", "BRCV11", "BRCV12", "BRCV13", "BRCV14", "BRCV15", "BRCV16", "BRCV17", "BRCV18", "BRCV19", "BRCV20", "BRCV21", "BRCV22", "BRCV23", "BRCV24", "BRCV25", "BRCV26", "BRCV27", "BRCV28", "BRCV29", "BRCV30", "BRCV31", "BRCV32", "BRCV33", "BRCV34", "BRCV35", "BRCV36", "BRCV37", "BRCV38", "BRCV39"};
const int bathroomLobbyConditionVariableNameLength[MAX_GROUPS*4] = {6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6};

/*Index Counters for everyone*/

const char* regularCustomerIndexLockName = "RCIndexLk";
const int regularCustomerIndexLockNameLength = 9;
const char* headCustomerIndexLockName = "HCIndexLk";
const int headCustomerIndexLockNameLength = 9;
const char* ticketClerkIndexLockName = "TCIndexLk";
const int ticketClerkIndexLockNameLength = 9;
const char* concessionClerkIndexLockName = "CCIndexLk";
const int concessionClerkIndexLockNameLength = 9;
const char* ticketTakerIndexLockName = "TTIndexLk";
const int ticketTakerIndexLockNameLength = 9;
const char* technicianIndexLockName = "TnIndexLk";
const int technicianIndexLockNameLength = 9;

const char* nextRegularCustomerName = "NextRC";
const int nextRegularCustomerNameLength = 6;
const char* nextRegularHeadCustomerName = "NextRHCust";
const int nextRegularHeadCustomerNameLength = 10;
const char* nextCustomerIndexName = "NextCustI";
const int nextCustomerIndexNameLength = 9;
const char* nextHeadCustomerName = "NextHC";
const int nextHeadCustomerNameLength = 6;
const char* nextTicketClerkName = "NextTC";
const int nextTicketClerkNameLength = 6;
const char* nextConcessionClerkName = "NextCC";
const int nextConcessionClerkNameLength = 6;
const char* nextTicketTakerName = "NextTT";
const int nextTicketTakerNameLength = 6;
const char* nextTechnicianName = "NextTech";
const int nextTechnicianNameLength = 8;

const char* ManagerFinishedName = "Exit";
const int ManagerFinishedNameLength = 4;



void initializeShared();

#endif